package com.zliblike_platform.mapper;

import com.zliblike_platform.entity.DownloadHistory;
import com.zliblike_platform.vo.DownloadHistoryVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * 下载历史Mapper接口
 */
@Mapper
public interface DownloadHistoryMapper {
    
    /**
     * 插入下载记录
     * @param downloadHistory 下载历史记录
     * @return 受影响的行数
     */
    int insert(DownloadHistory downloadHistory);
    
    /**
     * 查询用户的下载记录
     * @param userId 用户ID
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @param offset 偏移量
     * @param limit 限制数量
     * @return 下载历史记录列表
     */
    List<DownloadHistoryVO> selectByUserId(
            @Param("userId") Long userId,
            @Param("startDate") Date startDate,
            @Param("endDate") Date endDate,
            @Param("offset") Integer offset,
            @Param("limit") Integer limit);
    
    /**
     * 查询用户下载记录总数
     * @param userId 用户ID
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 记录总数
     */
    Integer countByUserId(
            @Param("userId") Long userId,
            @Param("startDate") Date startDate,
            @Param("endDate") Date endDate);
    
    /**
     * 删除下载记录
     * @param downloadId 下载记录ID
     * @param userId 用户ID
     * @return 受影响的行数
     */
    int deleteById(@Param("downloadId") Long downloadId, @Param("userId") Long userId);
    
    /**
     * 批量删除下载记录
     * @param downloadIds 下载记录ID列表
     * @param userId 用户ID
     * @return 受影响的行数
     */
    int batchDelete(@Param("downloadIds") List<Long> downloadIds, @Param("userId") Long userId);
    
    /**
     * 获取用户今日下载次数
     * @param userId 用户ID
     * @return 今日下载次数
     */
    Integer countTodayDownloads(@Param("userId") Long userId);
} 